package dao;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import android.content.Context;
import android.provider.Settings;
import android.util.Log;
import beans.AlarmsGestionnaire;

public class DaoAlarmsGestionnaire implements DaoAlarmInterfaceI{

	private Context context;
	
	public DaoAlarmsGestionnaire(Context context){
		this.context = context;
	}

	public void save(AlarmsGestionnaire alarmsGestionnaire) {
		try {
    		ObjectOutputStream alarmOOS= new ObjectOutputStream(context.openFileOutput("alarms.serial",Context.MODE_PRIVATE));
			alarmOOS.writeObject(alarmsGestionnaire);
			alarmOOS.flush();
			alarmOOS.close();
		}
    	catch(IOException ioe) {

    		Log.i("DaoAlarmgestionnaire", "Ioe exception lors de l'ecriture");
			ioe.printStackTrace();
		}
		
	}


	public AlarmsGestionnaire getSavedAlarmsGestionnaire() {
		AlarmsGestionnaire alarmGestionnaire = null;
		try {
    		ObjectInputStream alarmOIS= new ObjectInputStream(context.openFileInput("alarms.serial"));
    		alarmGestionnaire = (AlarmsGestionnaire) alarmOIS.readObject(); 
    		alarmOIS.close();
			updateOfficialClock(alarmGestionnaire);
		}
    	catch(FileNotFoundException fnfe){
    		Log.i("DaoAlarmGestionnaire", "file not found lors du chargement");
    	}
    	catch(IOException ioe) {
    		Log.i("DaoAlarmGestionnaire", "ioe Exceptioon");
			ioe.printStackTrace();
		}
    	catch(ClassNotFoundException cnfe) {

    		Log.i("DaoAlarmGestionnaire", "Class not found ");
			cnfe.printStackTrace();
		}
		
		//Si on a eu un probleme, on set une valeur par default a notre alarme
		if(alarmGestionnaire == null){
			alarmGestionnaire = new AlarmsGestionnaire();
			updateOfficialClock(alarmGestionnaire);
			
		}
		
		return alarmGestionnaire;
	}
	
	private void updateOfficialClock(AlarmsGestionnaire ag){
		String nextAlarm = Settings.System.getString(context.getContentResolver(),
				Settings.System.NEXT_ALARM_FORMATTED);

		if (nextAlarm.equals("")) {
			Log.i("nextAlarme", "il n'y a pas d'alarme");
			ag.setOfficialClock(false);
		} else {
			ag.setOfficialClock(true);
			Log.i("nextAlarme", "il y a une alarme = " + nextAlarm);
		}
	}
}
